export default {
  vulnerable: '漏洞',
  causes: '漏洞原因',
  solutions: '解决办法',
  compare: '分离对比',
  title: '标题',
  message: '留言',
  vulnerableFinish: '该漏洞已完成！',
  vulnerableSingleReset: '该漏洞已重置！',
  vulnerableReset: '所有漏洞已重置！',

  // XSS
  'xss.insertScript': '基于NodeJS+Webpack的前端应用简单地插入<script>标签不再能达到攻击的效果',
  'xss.cause':
    '跨站脚本攻击 ( Cross-Site Scripting ) 简称xss，是由于Web应用程序对用户的输入过滤不足而产生的.攻击者利用网站漏洞把恶意的脚本代码(通常包括HTML代码和客户端 Javascript脚本)注入到网页之中，当其他用户浏览这些网页时，就会执行其中的恶意代码，对受害用户可能采取 Cookie资料窃取、会话劫持、钓鱼欺骗等各种攻击。',
  'xss.compare':
    '基于前后端分离架构的Web应用，通常打包工具(如Webpack)自带CSP过滤，所以插入<script>标签没有作用，通常需要利用事件进行注入，并且常用的应用或UI框架对于用户输入都有防XSS过滤，所以防范XSS就是主要防范危险的语法并加以控制。',
  'xss.solutions.1':
    '输出的时候去进行验证，即当需要展示的时候，我们再对内容进行验证，这样我们就能够根据不同的环境去采取不同的保护方案了。',
  'xss.solutions.2':
    'XSS 防护的核心原则就是验证。 我们可以优先采用编码的方式来完成。所谓编码，就是将部分浏览器识别的关键词进行转换（比如 < 和 >），从而避免浏览器产生误解。',
  'xss.solutions.3':
    '对用户的内容进行检测。在这里，我们可以采用黑名单和白名单的规则。黑名单往往是我们最直接想到的方法：既然黑客要插入<javascript>标签，那么我们就检测用户内容中是否存在。',
  'xss.solutions.4':
    '面对 XSS 这样一个很普遍的问题，W3C 提出了 CSP（Content Security Policy，内容安全策略）来提升 Web 的安全性。所谓 CSP，就是在服务端返回的 HTTP header 里面添加一个 Content-Security-Policy 选项，然后定义资源的白名单域名。浏览器就会识别这个字段，并限制对非白名单资源的访问。',
  'xss.solutions.5':
    '对于前端框架要极度注意危险指令属性的使用(如React中的 dangerouslySetInnerHTML 属性或Vue的 v-html 指令)，如果有必要使用(如富文本)，一定要加以安全控制。',

  'xss.reflect.title': '请输入您的名字:',
  'xss.reflect.response': '回应:',
  'xss.reflect.welcome': '欢迎你, ',
  'xss.reflect.tips': '为什么不试试插入标签呢?',

  'xss.dom.title': '请选择你最喜欢的语言:',
  'xss.dom.tips': '注意URL的变化!',

  'xss.href.title': '请输入您喜欢的网址:',
  'xss.href.response': '回应:',
  'xss.href.favoriteWebsite': '你最喜欢的网站是:',
  'xss.href.tips': '返回的超链接似乎可以执行些什么?',

  'xss.store.title': '请发表你的留言:',
  'xss.store.message': '用户留言:',
  'xss.store.tips': '或许可以往数据库中插入一些奇怪的东西（或许这里不只XSS）...',

  // CSRF
  'csrf.cause':
    'CSRF（Cross-site request forgery）跨站请求伪造：攻击者诱导受害者进入第三方网站，在第三方网站中，向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证，绕过后台的用户验证，达到冒充用户对被攻击的网站执行某项操作的目的。CSRF 漏洞产生的主要原因：1、请求所有的参数均可确定，2、请求的审核不严格。',
  'csrf.compare':
    '前后端不分离架构下通常使用url跳转来实现发送请求并且通过cookie-session机制进行状态保持，而前后端分离框架下使用AJAX技术发送请求而不会引起页面的刷新，对于状态保持通常是在请求头添加auth参数，有许多不同机制，X-target采用JWT进行身份认证和状态保持。',
  'csrf.solutions.1':
    '检查Referer字段：HTTP头中有一个Referer字段，这个字段用以标明请求来源于哪个地址。在处理敏感数据请求时，通常来说，Referer字段应和请求的地址位于同一域名下。在接收请求的服务端判断请求的 Referer 头是否为正常的发送请求的页面，如果不是，则进行拦截。',
  'csrf.solutions.2':
    '添加校验token：由于CSRF的本质在于攻击者欺骗用户去访问自己设置的地址，所以如果要求在访问敏感数据请求时，要求用户浏览器提供不保存在cookie中，并且攻击者无法伪造的数据作为校验，那么攻击者就无法再运行CSRF攻击。这种数据通常是窗体中的一个数据项。服务器将其生成并附加在窗体中，其内容是一个伪随机数。当客户端通过窗体提交请求时，这个伪随机数也一并提交上去以供校验。正常的访问时，客户端浏览器能够正确得到并传回这个伪随机数，而通过CSRF传来的欺骗性攻击中，攻击者无从事先得知这个伪随机数的值，服务端就会因为校验token的值为空或者错误，拒绝这个可疑请求。',
  'csrf.solutions.3':
    '验证码：在发送请求前先需要输入基于服务端判断的验证码，机制与 Token 类似，防御 CSRF 效果非常好，不过此方法对用户的友好度很差。',

  'csrf.low.tips': '尝试去复现这个请求。',

  'csrf.mid.tips': '是否能找到Token字段?',

  // SQLI
  'sqli.cause':
    'SQL注入是将Web页面的原URL、表单域或数据包输入的参数，修改拼接成SQL语句，传递给Web服务器，进而传给数据库服务器以执行数据库命令。如Web应用程序的开发人员对用户所输入的数据或cookie等内容不进行过滤或验证(即存在注入点)就直接传输给数据库，就可能导致拼接的SQL被执行，获取对数据库的信息以及提权，发生SQL注入攻击。',
  'sqli.compare':
    '前后端耦合架构中通过url参数进行数据库查询进而渲染页面，而前后端分离架构下，并非直接渲染有数据的页面，而是通过用户操作发送请求进行数据库请求返回JSON/XML数据，并通过JS将其渲染到页面。虽然SQL注入主要是服务端漏洞，但是前端同样要进行输入的过滤。',
  'sqli.solutions.1': '对传进SQL语句里面的变量进行过滤，不允许危险字符传入。',
  'sqli.solutions.2': '使用参数化（Parameterized Query 或 Parameterized Statement）。',
  'sqli.solutions.3':
    '使用ORM框架，目前有很多ORM框架会自动使用参数化解决注入问题,但其也提供了"拼接"的方式,所以使用时需要慎重!',
  'sqli.solutions.4':
    '避免使用动态SQL，避免将用户的输入数据直接放入 SQL 语句中，最好使用准备好的语句和参数化查询，这样更安全。',
  'sqli.solutions.5':
    '限制数据库权限和特权将数据库用户的功能设置为最低要求，这将限制攻击者在设法获取访问权限时可以执行的操作。',

  'sqli.string.title': '根据用户名查询用户信息',
  'sqli.string.tips': '可以试着在用户ID后插入一些东西查询一些额外的东西...',

  'sqli.number.title': '根据用户ID查询用户信息',
  'sqli.number.tips': '可以试着在用户名后插入一些东西查询一些额外的东西...',

  // RCE
  'rce.cause':
    'RCE（Remot Command/Code Execute），远程命令/代码执行，是一种可以让攻击者直接向后台服务器远程注入操作系统命令或者代码，从而控制后台系统的攻击。一般出现这种漏洞，是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口。比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上。一般会给用户提供一个ping操作的web界面，用户从web界面输入目标IP，提交后，后台会对该IP地址进行一次ping测试，并返回测试结果。 如果，设计者在完成该功能时，没有做严格的安全控制，则可能会导致攻击者通过该接口提交意想不到的命令，从而让后台进行执行，从而控制整个后台服务器。',
  'rce.compare':
    'RCE漏洞在前后端耦合架构和前后端分离架构下危险程度不同，在前后端耦合架构下较为危险，以eval()为例：因为网页是由服务器端渲染，所以进行命令注入可以回显到客户端，攻击者可以更容易进行侵入。而在前后端分离架构下，并不容易把注入命令结果回显到客户端页面，但是同样也要注意被攻击的可能性。',
  'rce.solutions.1': '尽量不要使用 eval assert 等危险的命令执行函数。',
  'rce.solutions.2': '如果使用危险函数的话，一定要对输入内容进行严格的过滤。',
  'rce.solutions.3': '尽量不要让用户控制参数。',

  'rce.ping.title': '请输入您想ping的目标IP：',
  'rce.ping.tips': "您可以好好利用'&'",

  'rce.exec.title': '试着输入JS语句,然后去服务器端看看吧!',
  'rce.exec.tips': '尽量不要使用eval(),这个API是危险的!',

  // FILE
  'file.cause':
    '文件上传功能在web应用系统很常见，比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后，后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等，然后将其按照设计的格式进行重命名后存储在指定的目录。 如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨，则攻击着可能会上传一些恶意的文件，比如一句话木马，从而导致后台服务器被webshell。',

  'file.solutions.1': '验证文件类型、后缀名、大小。',
  'file.solutions.2': '验证文件的上传方式。',
  'file.solutions.3': '对文件进行一定复杂的重命名。',
  'file.solutions.4': '不要暴露文件上传后的路径。',

  'file.download.title': '点击以下载:',

  'file.upload.tips': '似乎可以绕过验证？',

  'file.download.tips': '可以利用RCE漏洞获取目录结构。',

  // BURST
  'burst.cause':
    '“暴力破解”是一攻击具手段，在web攻击中，一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录，直到得到正确的结果。 为了提高效率，暴力破解一般会使用带有字典的工具来进行自动化操作。理论上来说，大多数系统都是可以被暴力破解的，只要攻击者有足够强大的计算能力和时间，所以断定一个系统是否存在暴力破解漏洞，其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞，一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略，导致其被暴力破解的“可能性”变的比较高。',
  'burst.solutions.1': '用户层面就是要避免使用弱口令，服务器端可以限制用户密码的最短长度。',
  'burst.solutions.2': '设置登录阈值，一旦超过设置的阈值，则锁定账号。',
  'burst.solutions.3': '登录时使用验证码进行验证，防止自动化脚本进行暴力破解。',

  'burst.normal.tips': '尝试通过上网找到字典进行遍历爆破！',
  'burst.delay.tips': '延时发送请求即可，其并没有阈值！',
  'burst.limit.tips': '设置登录上限次数可以有效防止爆破。',
};
